home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / libs / stk110 / demosrc.com / SPRSHOW.C < prev   
C/C++ Source or Header  |  1991-02-25  |  3KB  |  125 lines

  1. /**********************************************************************
  2. * sprshow.c
  3. *
  4. * A simple program for viewing sprites. Creates two animated sprites
  5. * from the given sprite map file and bounces them around for 1000
  6. * steps.  Displays the size of the memory allocated for the sprite
  7. * shape data and the time to animate the two sprites 1000 times.
  8. * Usage:
  9. *     show [-res] fil.ext
  10. * -res can be either -1, -2, -4 or -8 and it means the horizontal
  11. * resolution of animation (-8 means one pixel resolution).
  12. **********************************************************************
  13.                     This file is part of
  14.  
  15.           STK -- The sprite toolkit -- version 1.1
  16.  
  17.               Copyright (C) Jari Karjala 1991
  18.  
  19. The sprite toolkit (STK) is a FreeWare toolkit for creating high
  20. resolution sprite graphics with PCompatible hardware. This toolkit 
  21. is provided as is without any warranty or such thing. See the file
  22. COPYING for further information.
  23.  
  24. **********************************************************************/
  25.  
  26. #include <stdio.h>
  27. #include <stdlib.h>
  28. #include <graphics.h>
  29. #include <conio.h>
  30. #include <dos.h>
  31. #include <time.h>
  32. #include <alloc.h>
  33.  
  34. #include "stk.h"
  35.  
  36.  
  37. void main(int argc, char **argv)
  38. {
  39.     ANIM_SPRITE as1, as2;
  40.     int res,i,j;
  41.     clock_t tt;
  42.     long mf2, mf3;
  43.     
  44.     if (argc<2) {
  45.         puts("Usage: show [-res] sprite.smp");
  46.         exit(1);
  47.     }
  48.     
  49.     if (argv[1][0]=='-') {
  50.         res = atoi(&argv[1][1]);
  51.         argv++;
  52.         argc--;
  53.     }
  54.     else
  55.         res = 4;
  56.  
  57.     detectgraph(&i, &j);
  58.     if (i==EGA || i==VGA) {
  59.         i = EGAMONO;
  60.         j = EGAMONOHI;
  61.     }
  62.     else if (i!=HERCMONO) {
  63.         puts("Unsupported graphics mode, sorry!");
  64.         exit(100);
  65.     }
  66.     
  67.     gr_start(&i, &j);
  68.     spr_initialize(i);
  69.  
  70.     mf2 = farcoreleft();
  71.     
  72.     as1 = spr_anim_create(1, spr_fio_read_smp(argv[1], res, 1));
  73.     if (as1==NULL) {
  74.         gr_puts("Load error (invalid filename, out of heap?) \nPress enter");
  75.         getch();
  76.         exit(2);
  77.     }
  78.     spr_anim_set_time(as1, 0, 6,5000);
  79.     spr_anim_set_location(as1, 20,15);
  80.     spr_anim_set_vector(as1, 2,2);
  81.     spr_anim_set_limits(as1, 20, 10, 620, 330);
  82.     spr_anim_start(as1);
  83.     
  84.  
  85.     as2 = spr_anim_create(1, spr_fio_read_smp(argv[1], res, 1));
  86.     if (as2==NULL) {
  87.         gr_dual_xy_printf(0,0,"Load error (out of heap?) \nPress enter");
  88.         getch();
  89.         gr_dual_xy_printf(0,0,"                            \n             ");
  90.     }
  91.     else {
  92.         spr_anim_set_time(as2, 0,6,5000);
  93.         spr_anim_set_location(as2, 300,150);
  94.         spr_anim_set_vector(as2, -2,2);
  95.         spr_anim_set_limits(as2, 20, 10, 620, 330);
  96.         spr_anim_start(as2);
  97.     }
  98.     
  99.     mf3 = farcoreleft();
  100.     
  101.     /** some background pictures **/
  102.     gr_dual_xy_printf(0,0,
  103.                    "The shape data took %ld bytes (%ld free). ", mf2-mf3,mf3);
  104.     gr_setactivepage(1);
  105.     rectangle(20, 10, 620, 330);
  106.     bar(100,100,300,160);
  107.     bar(300,160,500,220);
  108.     gr_setactivepage(0);
  109.     rectangle(20, 10, 620, 330);
  110.     bar(100,100,300,160);
  111.     bar(300,160,500,220);
  112.  
  113.     
  114.     tt = clock();
  115.     j = 0;
  116.     while (j++ < 1000) {
  117.         gr_setactivepage(spr_anim_next_pass());
  118.     }
  119.     gr_dual_xy_printf(0,8,
  120.                    "Unregulated animation time: %ld sec (1000 iterations)", 
  121.                    (clock() - tt) * 10L / 182L);
  122.     getch();
  123.  
  124. }
  125.